package com.simple.util.config;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

/**
 * @program: simple_tools
 * @description: properties文件工具类
 * @author: ChenWenLong
 * @create: 2019-12-31 10:11
 **/
public class PropertiesUtils {

    public static Map<String,String> customMap = new HashMap<>();

    static {
        File dir = new File("properties");
        try {
            List<File> files = searchAllFile(new File(dir.getAbsolutePath()));
            for (File file : files) {
                if(file.getName().endsWith(".properties")) {
                    Properties prop = new Properties();
                    prop.load(new FileInputStream(file));
                    customMap.putAll((Map) prop);
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 功能描述:
     * 〈查询某个目录下的所有文件〉
     *
     * @params : [dir]
     * @return : java.util.List<java.io.File>
     * @author : cwl
     * @date : 2019/12/31 10:08
     */
    private static List<File> searchAllFile(File dir) {
        ArrayList arrayList = new ArrayList();
        searchFiles(dir,arrayList);
        return arrayList;
    }

    /**
     * 功能描述:
     * 〈递归获取某个目录下的所有文件〉
     *
     * @params : [dir, collector]
     * @return : void
     * @author : cwl
     * @date : 2019/12/31 10:08
     */
    private static void searchFiles(File dir,List<File> collector) {
        if(dir.isDirectory()) {
            File[] subFiles = dir.listFiles();
            for(int i = 0; i < subFiles.length; i++) {
                searchFiles(subFiles[i],collector);
            }
        }else{
            collector.add(dir);
        }
    }

    /**
     * 功能描述:
     * 〈获取所有的key值〉
     *
     * @params : []
     * @return : java.util.List<java.lang.String>
     * @author : cwl
     * @date : 2019/12/31 10:12
     */
    public static Set<String> getAllKey(){
        return customMap.keySet();
    }

    /**
     * 功能描述:
     * 〈获取所有的Value值〉
     *
     * @params : []
     * @return : java.util.Set<java.lang.String>
     * @author : cwl
     * @date : 2019/12/31 10:18
     */
    public static List<String> getAllValue(){
        return (List<String>) customMap.values();
    }

    /**
     * 功能描述:
     * 〈根据Key获取Value〉
     *
     * @params : [key]
     * @return : java.util.List<java.lang.String>
     * @author : cwl
     * @date : 2019/12/31 10:19
     */
    public static Object getValue(String key){
        return customMap.get(key);
    }

}
